package com.example.springboot.service;

import com.example.springboot.common.Page;

import java.util.List;

/**
 * 商品分类表(Category)表服务接口
 *
 * @author makejava
 * @since 2024-01-13 17:16:25
 */
public interface CategoryService {

    /**
     * 获取所有商家信息
     *
     * @return
     */
    List<Category> selectAll();


    /**
     * 根据ID删除
     *
     * @param id
     */
    void deleteById(Integer id);


    /**
     * 根据ID更新信息
     *
     * @param category
     */
    void updateById(Category category);

    /**
     * 条件查询
     *
     * @param name
     * @param detail
     * @param status
     * @return
     */
    List<Category> selectByManyCondition(String name, String detail, Integer status);

    /**
     * 条件查询 分页查询
     *
     * @param currentPage
     * @param pageSize
     * @return
     */
    Page<Category> selectByPage(Integer currentPage, Integer pageSize);

    /**
     * 分页查询
     *
     * @param currentPage
     * @param pageSize
     * @param name
     * @param detail
     * @param status
     * @return
     */
    Page<Category> selectByManyConditionInpage(Integer currentPage, Integer pageSize, String name, String detail, Integer status);


    /**
     * 分页查询
     *
     * @param currentPage
     * @param pageSize
     * @param name
     * @param detail
     * @return
     */
    Page<Category> selectByManyConditionNoStatusInpage(Integer currentPage, Integer pageSize, String name, String detail);


    /**
     * 批量删除
     *
     * @param ids
     */
    void deleteByIds(List<Integer> ids);


    /**
     * 添加商家
     *
     * @param category
     */
    void addCategory(Category category);

    /**
     * 根据ID查询
     *
     * @param id
     * @return
     */
    Category selectById(Integer id);

    /**
     * 根据ID修改状态
     *
     * @param id
     * @param status
     */
    void updateStatus(Integer id, Integer status);

    /**
     * 根据ID修改用户信息
     *
     * @param category
     */
    void updateCategory(Category category);


    /**
     * 获取需要输入建议的商品分类
     *
     * @return
     */
    List<Category> loadAllCategory();


    /**
     * 获取TOP5的分类
     *
     * @return
     */
    List<Category> selectTop5Category();
}
